package modelo.proceso;

//import com.sun.org.apache.bcel.internal.generic.CPInstruction;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.hyperic.sigar.SigarException;
import org.hyperic.sigar.cmd.SigarCommandBase;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
/**
 *
 * @author Andrés
 */
public class InformacionProceso extends SigarCommandBase {

    String pid;
    String mem;
    double pctj;

    public String getPid() {
        return pid;
    }

    public double getPctj() {
        return pctj;
    }

    public InformacionProceso(String name) {
        this.encuentra(name, 100);
    }

    public void calculapctj() throws SigarException {
        println("pid=" + pid);
        
        try {
            pctj = sigar.getProcCpu(pid).getPercent();

        } catch (SigarException e) {
        }

    }

    public void prueba(String p) {
        try {
            System.out.println("=)");
            println(sigar.getProcState(p).getName());
        } catch (SigarException ex) {
            Logger.getLogger(InformacionProceso.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public String encuentra(String nombreProceso, int p) {

        try {
            for (; p < 100000; p++) {
                if (sigar.getProcState(String.valueOf(p)).getName().equals(nombreProceso)) {
                    this.pid = String.valueOf(p);
                    return this.pid;
                }
            }
        } catch (SigarException ex) {
            encuentra(nombreProceso, p);
        }
        return this.pid;
    }

    public String getMem() {
        return mem;
    }

    public void calculaMemUsada() throws SigarException, InterruptedException {
        this.mem = String.valueOf(sigar.getProcMem(getPid()).getSize());
    }

//    public static void main(String[] args) throws Exception {
//        InformacionProceso p = new InformacionProceso();
//        String pid = "=)";
//        p.encuentra("oracle", 100);
//        p.calculaMemUsada();
//        System.out.println("Encontrado --> " + p.getPid());
//        while (true) {//para probar que el uso de memoria cambia
//            p.calculaMemUsada();
//            System.out.println(p.getMem());
//            Thread.sleep(1000);
//        }
//    }

    @Override
    public void output(String[] strings) throws SigarException {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
}
